最常用于分类问题(包括多分类),特别是特征也是离散变量的情况

所谓朴素贝叶斯法主要是基于两大假设:

  1. 条件独立性。样本的各个特征在结果给定的条件下(也就是当y是确定时)是相互独立的;

  2. 基于贝叶斯后验概率最大计算参数。

通过例子解释

In [1]:
import numpy as np
import pandas as pd
from sklearn import datasets
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
#获取鸢尾花数据
iris = datasets.load_iris()
print('鸢尾花类型有:',iris.target_names)
print('鸢尾花数据集包括的特征有:',iris.feature_names)
鸢尾花类型有: ['setosa' 'versicolor' 'virginica']
鸢尾花数据集包括的特征有: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
In [4]:
y = iris.target
X = iris.data

所以$X$表示样本的特征,也就是模型的输入;$y$是标记,是模型的输出。

其实构建模型的最终目标是要计算$P(y = c_k |X)$,即在$X$给定的条件下计算$y=c_k$的概率。这里假设$y$是离散变量,其可能的取值是$c_k$

那么根据Bayes准则,可以得到如下转换:

$$P(y=c_k | X) = \frac{P(X, y=c_k)}{P(X)} = \frac{P(X | y=c_k) P(y=c_k)}{\sum_{k} P(X | y=c_k) P(y=c_k)}$$

而 $$P(X | y=c_k) = P(X^1=x^1, X^2=x^2, … , X^n=x^n | y = x_k)$$ 这里$n=4$.

要计算上述式子相当困难。

而朴素贝叶斯模型,又加了一个条件:在$y$给定的条件下,各特征之间相互独立。那么上述式子可以转化为

$$P(X | y=c_k) = P(X^1=x^1, X^2=x^2, … , X^n=x^n | y = c_k) = \prod_{j=1}^n P(X^j=x^j | y=c_k)$$

带入得到:

$$P(y=c_k | X) = \frac{P(y=c_k) \prod_{j=1}^n P(X^j=x^j | y=c_k)}{\sum_k P(y=c_k) \prod_{j=1}^n P(X^j=x^j | y=c_k)}$$

所以,只需要找到某一个$k$或者($c_k$)使得上述式子最大化即可。

其中,$P(X^j=x^j | y=c_k)$的计算一般根据频率统计即可

所以,这种方法常用与分类问题(包括多分类),特别是特征也是离散变量的情况。

如果是回归问题, 也就是$y$是连续变量那么还需要对$P(X^j | y)$以及$P(y)$的分布进行进一步假设,在通过极大似然估计法估计相关参数。

Like this post? Share on: TwitterFacebookEmail


Keep Reading


Published

Category

Machine Learning

Tags

Stay in Touch